package map;

import java.sql.SQLOutput;
import java.util.*;

/**
 * Map的遍历
 * Map支持三种遍历方式:
 * 1:遍历所有的key
 * 2:遍历每一组键值对
 * 3:遍历所有的value(相对不常用)
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("语文", 103);
        map.put("数学", 100);
        map.put("英语", 77);
        map.put("物理", 60);
        map.put("化学", 68);
        map.put("生物", 78);
        /*
            Set ketSet()
            将当前Map中所有的key以一个Set集合形式返回
         */
        Set<String> ketSet = map.keySet();
        for (String key : ketSet) {
            System.out.println("key:" + key);
        }
         /*
            Set entrySet()
            返回一个Set集合，集合中每一个元素是一个Entry实例。
            Map.Entry的每一个实例表示Map中的一组键值对，有两个常用方法:
            K getKey()      获取这组键值对的key
            V getValue()    获取这组键值对的value
         */
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
        for (Map.Entry<String, Integer> e : entrySet) {
            String key = e.getKey();
            Integer value = e.getValue();
            System.out.println(key + ":" + value);
        }
        /*
            Collection values()
            将当前Map中所有的value以一个集合形式返回
         */
        Collection<Integer> values = map.values();
        for (Integer value : values) {
            System.out.println("value:" + value);
        }

        Collection<String> c = new ArrayList<>();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
        for (String e : c) {
            System.out.println(e);
        }
        c.forEach(e -> System.out.println(e));

        //Map也支持forEach方法
        map.forEach((k, v) -> System.out.println(k + ":" + v));
    }
}
